// version v2.1.37
// update date: 2012-16-04 13:03:18
package com.seaengine.net
{
public class JoyPortBuffer extends Buffer
{
	public function encoderangeA(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt16(e["_aMax"] as uint );
		this.encodeUInt16(e["_aMin"] as uint );

		return this;
	}

	public function decoderangeA():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_aMax"] = this.decodeUInt16();
		e["_aMin"] = this.decodeUInt16();

		return e;
	}

	public function encodesecondPropertiesSimple(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt16(e["_defence"] as uint );
		this.encodeUInt16(e["_speed"] as uint );
		this.encodeUInt16(e["_precise"] as uint );
		this.encodeUInt16(e["_jump"] as uint );
		this.encodeUInt16(e["_moveSpeed"] as uint );
		this.encodeUInt16(e["_hpRecover"] as uint );
		this.encodeUInt16(e["_mpRecover"] as uint );

		return this;
	}

	public function decodesecondPropertiesSimple():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_defence"] = this.decodeUInt16();
		e["_speed"] = this.decodeUInt16();
		e["_precise"] = this.decodeUInt16();
		e["_jump"] = this.decodeUInt16();
		e["_moveSpeed"] = this.decodeUInt16();
		e["_hpRecover"] = this.decodeUInt16();
		e["_mpRecover"] = this.decodeUInt16();

		return e;
	}

	public function encodethirdPropertiesSettlement(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeInt32(e["_exp"] as int );
		this.encodeInt32(e["_potentialEn"] as int );
		this.encodeInt32(e["_slaughter"] as int );
		this.encodeInt32(e["_justice"] as int );

		return this;
	}

	public function decodethirdPropertiesSettlement():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_exp"] = this.decodeInt32();
		e["_potentialEn"] = this.decodeInt32();
		e["_slaughter"] = this.decodeInt32();
		e["_justice"] = this.decodeInt32();

		return e;
	}

	public function encodethirdPropertiesSpecial(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_anger"] as uint );
		this.encodeUInt16(e["_wanted"] as uint );

		return this;
	}

	public function decodethirdPropertiesSpecial():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_anger"] = this.decodeUInt32();
		e["_wanted"] = this.decodeUInt16();

		return e;
	}

	public function encodesecondPropertiesComplex(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_hpMax"] as uint );
		this.encodeUInt32(e["_mpMax"] as uint );
		this.encodeUInt16(e["_dodge"] as uint );
		this.encodeUInt16(e["_critical"] as uint );
		this.encodeUInt16(e["_attackStrength"] as uint );
		this.encodeUInt16(e["_skillStrength"] as uint );
		this.encodeUInt16(e["_parry"] as uint );

		return this;
	}

	public function decodesecondPropertiesComplex():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_hpMax"] = this.decodeUInt32();
		e["_mpMax"] = this.decodeUInt32();
		e["_dodge"] = this.decodeUInt16();
		e["_critical"] = this.decodeUInt16();
		e["_attackStrength"] = this.decodeUInt16();
		e["_skillStrength"] = this.decodeUInt16();
		e["_parry"] = this.decodeUInt16();

		return e;
	}

	public function encodethirdPropertiesFight(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeFloat(e["_decreaseDamage"] as Number );
		this.encodeFloat(e["_parryRate"] as Number );
		this.encodeFloat(e["_dodgeRate"] as Number );
		this.encodeFloat(e["_criticalRate"] as Number );
		this.encodeFloat(e["_decreaseDodge"] as Number );
		this.encodeFloat(e["_decreaseCD"] as Number );
		this.encodeUInt32(e["_damageMax"] as uint );
		this.encodeUInt32(e["_damageMin"] as uint );
		this.encodeUInt16(e["_allDamage"] as uint );
		this.encodeUInt16(e["_addSkillDamage"] as uint );
		this.encodeUInt16(e["_attackIInterval"] as uint );

		return this;
	}

	public function decodethirdPropertiesFight():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_decreaseDamage"] = this.decodeFloat();
		e["_parryRate"] = this.decodeFloat();
		e["_dodgeRate"] = this.decodeFloat();
		e["_criticalRate"] = this.decodeFloat();
		e["_decreaseDodge"] = this.decodeFloat();
		e["_decreaseCD"] = this.decodeFloat();
		e["_damageMax"] = this.decodeUInt32();
		e["_damageMin"] = this.decodeUInt32();
		e["_allDamage"] = this.decodeUInt16();
		e["_addSkillDamage"] = this.decodeUInt16();
		e["_attackIInterval"] = this.decodeUInt16();

		return e;
	}

	public function encodeparty(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_party"] as uint );
		this.encodeUInt32(e["_contribution"] as uint );

		return this;
	}

	public function decodeparty():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_party"] = this.decodeUInt32();
		e["_contribution"] = this.decodeUInt32();

		return e;
	}

	public function encodeplayerStableInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_str = e["_name"];
		len = _str.length;
		this.encodeUInt32(len);
		if(len != 0)
			this.encodeString(_str);


		_ar = e["_title"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeUInt32(_ar[i]);

		this.encodeparty(e["_party"] as Object );
		this.encodeInt64(e["_playerID"] as Int64 );
		this.encodeUInt32(e["_birthday"] as uint );
		this.encodeUInt32(e["_master"] as uint );
		this.encodeUInt32(e["_fightPower"] as uint );
		this.encodeUInt32(e["_robProtectedTime"] as uint );
		this.encodeInt32(e["_lifeFix"] as int );
		this.encodeInt16(e["_luckFix"] as int );
		this.encodeUInt8(e["_sex"] as uint );

		return this;
	}

	public function decodeplayerStableInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		len = this.decodeUInt32();
		e["_name"] = this.decodeString(this.position,len);
		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeUInt32());
		e["_title"] = _ar;
		e["_party"] = this.decodeparty();
		e["_playerID"] = this.decodeInt64();
		e["_birthday"] = this.decodeUInt32();
		e["_master"] = this.decodeUInt32();
		e["_fightPower"] = this.decodeUInt32();
		e["_robProtectedTime"] = this.decodeUInt32();
		e["_lifeFix"] = this.decodeInt32();
		e["_luckFix"] = this.decodeInt16();
		e["_sex"] = this.decodeUInt8();

		return e;
	}

	public function encodebasicProperties(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt16(e["_strength"] as uint );
		this.encodeUInt16(e["_wisdom"] as uint );
		this.encodeUInt16(e["_stamina"] as uint );
		this.encodeUInt16(e["_agility"] as uint );

		return this;
	}

	public function decodebasicProperties():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_strength"] = this.decodeUInt16();
		e["_wisdom"] = this.decodeUInt16();
		e["_stamina"] = this.decodeUInt16();
		e["_agility"] = this.decodeUInt16();

		return e;
	}

	public function encodeplayerLevel(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodebasicProperties(e["_base"] as Object );
		this.encodesecondPropertiesComplex(e["_base2"] as Object );
		this.encodeInt32(e["_exp"] as int );
		this.encodeUInt32(e["_totalExp"] as uint );
		this.encodeUInt32(e["_hpMax"] as uint );

		return this;
	}

	public function decodeplayerLevel():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_base"] = this.decodebasicProperties();
		e["_base2"] = this.decodesecondPropertiesComplex();
		e["_exp"] = this.decodeInt32();
		e["_totalExp"] = this.decodeUInt32();
		e["_hpMax"] = this.decodeUInt32();

		return e;
	}

	public function encodescenePosition(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt16(e["_x"] as uint );
		this.encodeUInt16(e["_y"] as uint );

		return this;
	}

	public function decodescenePosition():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_x"] = this.decodeUInt16();
		e["_y"] = this.decodeUInt16();

		return e;
	}

	public function encodedungeonPosition(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodescenePosition(e["_scene"] as Object );
		this.encodeUInt16(e["_zoneID"] as uint );

		return this;
	}

	public function decodedungeonPosition():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_scene"] = this.decodescenePosition();
		e["_zoneID"] = this.decodeUInt16();

		return e;
	}

	public function encodemapPosition(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt8(e["_region"] as uint );
		this.encodeUInt8(e["_point"] as uint );

		return this;
	}

	public function decodemapPosition():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_region"] = this.decodeUInt8();
		e["_point"] = this.decodeUInt8();

		return e;
	}

	public function encodedungeon(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeInt64(e["_dungeonObjectID"] as Int64 );
		this.encodeUInt16(e["_dungeonEntrance"] as uint );

		return this;
	}

	public function decodedungeon():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_dungeonObjectID"] = this.decodeInt64();
		e["_dungeonEntrance"] = this.decodeUInt16();

		return e;
	}

	public function encodeplayerState(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		var flags:uint = 0;
		if(e["_mapPosition"])
		{
			flags |= 0x0001
		}
		if(e["_currentDungeon"])
		{
			flags |= 0x0002
		}
		if(e["_dungeonPosition"])
		{
			flags |= 0x0004
		}
		if(e["_timestamp"])
		{
			flags |= 0x0008
		}
		if(e["_parameters"])
		{
			flags |= 0x0010
		}
		if(e["_state"])
		{
			flags |= 0x0020
		}
		if(e["_levelupKongfuFreeCount"])
		{
			flags |= 0x0040
		}
		if(e["_levelupKongfuPaidCount"])
		{
			flags |= 0x0080
		}
		if(flags & 0x0001)		{
		this.encodemapPosition(e["_mapPosition"] as Object );
		}
		if(flags & 0x0002)		{
		this.encodedungeon(e["_currentDungeon"] as Object );
		}
		if(flags & 0x0004)		{
		this.encodedungeonPosition(e["_dungeonPosition"] as Object );
		}
		if(flags & 0x0008)		{
		this.encodeUInt32(e["_timestamp"] as uint );
		}
		if(flags & 0x0010)		{

			_ar = e["_parameters"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encodeUInt32(_ar[i]);

		}
		if(flags & 0x0020)		{
		this.encodeUInt8(e["_state"] as uint );
		}
		if(flags & 0x0040)		{
		this.encodeUInt8(e["_levelupKongfuFreeCount"] as uint );
		}
		if(flags & 0x0080)		{
		this.encodeUInt8(e["_levelupKongfuPaidCount"] as uint );
		}

		return this;
	}

	public function decodeplayerState():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		var flags:uint = this.decodeUInt8();
		if(flags & 0x0001)
		{
			e["_mapPosition"] = this.decodemapPosition();
		}
		if(flags & 0x0002)
		{
			e["_currentDungeon"] = this.decodedungeon();
		}
		if(flags & 0x0004)
		{
			e["_dungeonPosition"] = this.decodedungeonPosition();
		}
		if(flags & 0x0008)
		{
			e["_timestamp"] = this.decodeUInt32();
		}
		if(flags & 0x0010)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decodeUInt32());
			e["_parameters"] = _ar;
		}
		if(flags & 0x0020)
		{
			e["_state"] = this.decodeUInt8();
		}
		if(flags & 0x0040)
		{
			e["_levelupKongfuFreeCount"] = this.decodeUInt8();
		}
		if(flags & 0x0080)
		{
			e["_levelupKongfuPaidCount"] = this.decodeUInt8();
		}

		return e;
	}

	public function encodeplayerForce(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_timestamp"] as uint );
		this.encodeUInt32(e["_pkPoints"] as uint );

		_ar = e["_prestiges"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeUInt32(_ar[i]);

		this.encodeUInt8(e["_forceID"] as uint );

		return this;
	}

	public function decodeplayerForce():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_timestamp"] = this.decodeUInt32();
		e["_pkPoints"] = this.decodeUInt32();
		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeUInt32());
		e["_prestiges"] = _ar;
		e["_forceID"] = this.decodeUInt8();

		return e;
	}

	public function encodecombo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_skillIDs"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeUInt32(_ar[i]);


		return this;
	}

	public function decodecombo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeUInt32());
		e["_skillIDs"] = _ar;

		return e;
	}

	public function encoderankInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_fightTimestamp"] as uint );
		this.encodeUInt32(e["_levelTimestamp"] as uint );
		this.encodeUInt32(e["_moneyTimestamp"] as uint );
		this.encodeUInt32(e["_partyTimestamp"] as uint );
		this.encodeUInt32(e["_binQiPuTimestamp"] as uint );
		this.encodeUInt32(e["_zhanDouLiTimestamp"] as uint );
		this.encodeUInt32(e["_jinJiChangTimestamp"] as uint );
		this.encodeUInt32(e["_liuShanMenTimestamp"] as uint );
		this.encodeUInt32(e["_daBiaoJuTimestamp"] as uint );
		this.encodeUInt32(e["_shaShouLouTimestamp"] as uint );
		this.encodeUInt32(e["_shiErLianHuanWuTimestamp"] as uint );
		this.encodeUInt32(e["_honorTimestamp"] as uint );
		this.encodeUInt16(e["_fightNumber"] as uint );

		return this;
	}

	public function decoderankInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_fightTimestamp"] = this.decodeUInt32();
		e["_levelTimestamp"] = this.decodeUInt32();
		e["_moneyTimestamp"] = this.decodeUInt32();
		e["_partyTimestamp"] = this.decodeUInt32();
		e["_binQiPuTimestamp"] = this.decodeUInt32();
		e["_zhanDouLiTimestamp"] = this.decodeUInt32();
		e["_jinJiChangTimestamp"] = this.decodeUInt32();
		e["_liuShanMenTimestamp"] = this.decodeUInt32();
		e["_daBiaoJuTimestamp"] = this.decodeUInt32();
		e["_shaShouLouTimestamp"] = this.decodeUInt32();
		e["_shiErLianHuanWuTimestamp"] = this.decodeUInt32();
		e["_honorTimestamp"] = this.decodeUInt32();
		e["_fightNumber"] = this.decodeUInt16();

		return e;
	}

	public function encodebagSoltsInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt8(e["_equipSoltsNumber"] as uint );
		this.encodeUInt8(e["_itemSoltsNumber"] as uint );
		this.encodeUInt8(e["_gemSoltsNumber"] as uint );
		this.encodeUInt8(e["_taskItemSoltsNumber"] as uint );

		return this;
	}

	public function decodebagSoltsInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_equipSoltsNumber"] = this.decodeUInt8();
		e["_itemSoltsNumber"] = this.decodeUInt8();
		e["_gemSoltsNumber"] = this.decodeUInt8();
		e["_taskItemSoltsNumber"] = this.decodeUInt8();

		return e;
	}

	public function encodereward(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_id"] as uint );
		this.encodeUInt32(e["_itemId"] as uint );
		this.encodeUInt32(e["_number"] as uint );
		this.encodeUInt8(e["_reason"] as uint );
		this.encodeUInt8(e["_category"] as uint );

		return this;
	}

	public function decodereward():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_id"] = this.decodeUInt32();
		e["_itemId"] = this.decodeUInt32();
		e["_number"] = this.decodeUInt32();
		e["_reason"] = this.decodeUInt8();
		e["_category"] = this.decodeUInt8();

		return e;
	}

	public function encodeactiveStateInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_autoQTENumber"] as uint );
		this.encodeUInt32(e["_killMonsterNumber"] as uint );
		this.encodeUInt8(e["_hpBufferActive"] as uint );
		this.encodeUInt8(e["_mpBufferActive"] as uint );
		this.encodeUInt8(e["_autoQTEActive"] as uint );

		return this;
	}

	public function decodeactiveStateInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_autoQTENumber"] = this.decodeUInt32();
		e["_killMonsterNumber"] = this.decodeUInt32();
		e["_hpBufferActive"] = this.decodeUInt8();
		e["_mpBufferActive"] = this.decodeUInt8();
		e["_autoQTEActive"] = this.decodeUInt8();

		return e;
	}

	public function encodemoney(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_money1"] as uint );
		this.encodeUInt32(e["_money2"] as uint );
		this.encodeUInt32(e["_money3"] as uint );
		this.encodeUInt32(e["_money4"] as uint );

		return this;
	}

	public function decodemoney():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_money1"] = this.decodeUInt32();
		e["_money2"] = this.decodeUInt32();
		e["_money3"] = this.decodeUInt32();
		e["_money4"] = this.decodeUInt32();

		return e;
	}

	public function encodeplayerInfoBasic(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		var flags:uint = 0;
		if(e["_stableInfo"])
		{
			flags |= 0x0001
		}
		if(e["_thirdPropertiesSettlement"])
		{
			flags |= 0x0002
		}
		if(e["_thirdPropertiesSpecial"])
		{
			flags |= 0x0004
		}
		if(e["_secondPropertiesSimple"])
		{
			flags |= 0x0008
		}
		if(e["_playerLevel"])
		{
			flags |= 0x0010
		}
		if(e["_playerState"])
		{
			flags |= 0x0020
		}
		if(e["_playerForce"])
		{
			flags |= 0x0040
		}
		if(e["_combo"])
		{
			flags |= 0x0080
		}
		if(e["_bagSoltsInfo"])
		{
			flags |= 0x0100
		}
		if(e["_rewardList"])
		{
			flags |= 0x0200
		}
		if(e["_activeStateInfo"])
		{
			flags |= 0x0400
		}
		if(e["_moneys"])
		{
			flags |= 0x0800
		}
		if(e["_storyFlag"])
		{
			flags |= 0x1000
		}
		if(e["_hp"])
		{
			flags |= 0x2000
		}
		if(e["_mp"])
		{
			flags |= 0x4000
		}
		if(e["_money"])
		{
			flags |= 0x8000
		}
		if(e["_ingot"])
		{
			flags |= 0x10000
		}
		if(e["_totalIngot"])
		{
			flags |= 0x20000
		}
		if(e["_rebateIngot"])
		{
			flags |= 0x40000
		}
		if(e["_addStrengthValue"])
		{
			flags |= 0x80000
		}
		if(e["_hpBuffer"])
		{
			flags |= 0x100000
		}
		if(e["_mpBuffer"])
		{
			flags |= 0x200000
		}
		if(e["_preAdventureTime"])
		{
			flags |= 0x400000
		}
		if(e["_hangupDungeonType"])
		{
			flags |= 0x800000
		}
		if(e["_level"])
		{
			flags |= 0x1000000
		}
		if(e["_vipLevel"])
		{
			flags |= 0x2000000
		}
		if(e["_haveGotDailyGift"])
		{
			flags |= 0x4000000
		}
		if(flags & 0x0001)		{
		this.encodeplayerStableInfo(e["_stableInfo"] as Object );
		}
		if(flags & 0x0002)		{
		this.encodethirdPropertiesSettlement(e["_thirdPropertiesSettlement"] as Object );
		}
		if(flags & 0x0004)		{
		this.encodethirdPropertiesSpecial(e["_thirdPropertiesSpecial"] as Object );
		}
		if(flags & 0x0008)		{
		this.encodesecondPropertiesSimple(e["_secondPropertiesSimple"] as Object );
		}
		if(flags & 0x0010)		{
		this.encodeplayerLevel(e["_playerLevel"] as Object );
		}
		if(flags & 0x0020)		{
		this.encodeplayerState(e["_playerState"] as Object );
		}
		if(flags & 0x0040)		{
		this.encodeplayerForce(e["_playerForce"] as Object );
		}
		if(flags & 0x0080)		{
		this.encodecombo(e["_combo"] as Object );
		}
		if(flags & 0x0100)		{
		this.encodebagSoltsInfo(e["_bagSoltsInfo"] as Object );
		}
		if(flags & 0x0200)		{

			_ar = e["_rewardList"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encodereward(_ar[i]);

		}
		if(flags & 0x0400)		{
		this.encodeactiveStateInfo(e["_activeStateInfo"] as Object );
		}
		if(flags & 0x0800)		{
		this.encodemoney(e["_moneys"] as Object );
		}
		if(flags & 0x1000)		{

			_ar = e["_storyFlag"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encodeUInt32(_ar[i]);

		}
		if(flags & 0x2000)		{
		this.encodeUInt32(e["_hp"] as uint );
		}
		if(flags & 0x4000)		{
		this.encodeUInt32(e["_mp"] as uint );
		}
		if(flags & 0x8000)		{
		this.encodeUInt32(e["_money"] as uint );
		}
		if(flags & 0x10000)		{
		this.encodeUInt32(e["_ingot"] as uint );
		}
		if(flags & 0x20000)		{
		this.encodeUInt32(e["_totalIngot"] as uint );
		}
		if(flags & 0x40000)		{
		this.encodeUInt32(e["_rebateIngot"] as uint );
		}
		if(flags & 0x80000)		{
		this.encodeUInt32(e["_addStrengthValue"] as uint );
		}
		if(flags & 0x100000)		{
		this.encodeUInt32(e["_hpBuffer"] as uint );
		}
		if(flags & 0x200000)		{
		this.encodeUInt32(e["_mpBuffer"] as uint );
		}
		if(flags & 0x400000)		{
		this.encodeUInt32(e["_preAdventureTime"] as uint );
		}
		if(flags & 0x800000)		{
		this.encodeUInt16(e["_hangupDungeonType"] as uint );
		}
		if(flags & 0x1000000)		{
		this.encodeUInt16(e["_level"] as uint );
		}
		if(flags & 0x2000000)		{
		this.encodeUInt8(e["_vipLevel"] as uint );
		}
		if(flags & 0x4000000)		{
		this.encodeUInt8(e["_haveGotDailyGift"] as uint );
		}

		return this;
	}

	public function decodeplayerInfoBasic():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		var flags:uint = this.decodeUInt32();
		if(flags & 0x0001)
		{
			e["_stableInfo"] = this.decodeplayerStableInfo();
		}
		if(flags & 0x0002)
		{
			e["_thirdPropertiesSettlement"] = this.decodethirdPropertiesSettlement();
		}
		if(flags & 0x0004)
		{
			e["_thirdPropertiesSpecial"] = this.decodethirdPropertiesSpecial();
		}
		if(flags & 0x0008)
		{
			e["_secondPropertiesSimple"] = this.decodesecondPropertiesSimple();
		}
		if(flags & 0x0010)
		{
			e["_playerLevel"] = this.decodeplayerLevel();
		}
		if(flags & 0x0020)
		{
			e["_playerState"] = this.decodeplayerState();
		}
		if(flags & 0x0040)
		{
			e["_playerForce"] = this.decodeplayerForce();
		}
		if(flags & 0x0080)
		{
			e["_combo"] = this.decodecombo();
		}
		if(flags & 0x0100)
		{
			e["_bagSoltsInfo"] = this.decodebagSoltsInfo();
		}
		if(flags & 0x0200)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decodereward());
			e["_rewardList"] = _ar;
		}
		if(flags & 0x0400)
		{
			e["_activeStateInfo"] = this.decodeactiveStateInfo();
		}
		if(flags & 0x0800)
		{
			e["_moneys"] = this.decodemoney();
		}
		if(flags & 0x1000)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decodeUInt32());
			e["_storyFlag"] = _ar;
		}
		if(flags & 0x2000)
		{
			e["_hp"] = this.decodeUInt32();
		}
		if(flags & 0x4000)
		{
			e["_mp"] = this.decodeUInt32();
		}
		if(flags & 0x8000)
		{
			e["_money"] = this.decodeUInt32();
		}
		if(flags & 0x10000)
		{
			e["_ingot"] = this.decodeUInt32();
		}
		if(flags & 0x20000)
		{
			e["_totalIngot"] = this.decodeUInt32();
		}
		if(flags & 0x40000)
		{
			e["_rebateIngot"] = this.decodeUInt32();
		}
		if(flags & 0x80000)
		{
			e["_addStrengthValue"] = this.decodeUInt32();
		}
		if(flags & 0x100000)
		{
			e["_hpBuffer"] = this.decodeUInt32();
		}
		if(flags & 0x200000)
		{
			e["_mpBuffer"] = this.decodeUInt32();
		}
		if(flags & 0x400000)
		{
			e["_preAdventureTime"] = this.decodeUInt32();
		}
		if(flags & 0x800000)
		{
			e["_hangupDungeonType"] = this.decodeUInt16();
		}
		if(flags & 0x1000000)
		{
			e["_level"] = this.decodeUInt16();
		}
		if(flags & 0x2000000)
		{
			e["_vipLevel"] = this.decodeUInt8();
		}
		if(flags & 0x4000000)
		{
			e["_haveGotDailyGift"] = this.decodeUInt8();
		}

		return e;
	}

	public function encodecelebWeapon(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_str = e["_firstName"];
		len = _str.length;
		this.encodeUInt32(len);
		if(len != 0)
			this.encodeString(_str);

		this.encodeUInt16(e["_level"] as uint );
		this.encodeUInt8(e["_title"] as uint );
		this.encodeUInt8(e["_secondName"] as uint );
		this.encodeUInt8(e["_thirdName"] as uint );
		this.encodeUInt8(e["_rank"] as uint );

		_ar = e["_jewel"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeUInt8(_ar[i]);

		this.encodeUInt8(e["_attribute"] as uint );

		return this;
	}

	public function decodecelebWeapon():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		len = this.decodeUInt32();
		e["_firstName"] = this.decodeString(this.position,len);
		e["_level"] = this.decodeUInt16();
		e["_title"] = this.decodeUInt8();
		e["_secondName"] = this.decodeUInt8();
		e["_thirdName"] = this.decodeUInt8();
		e["_rank"] = this.decodeUInt8();
		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeUInt8());
		e["_jewel"] = _ar;
		e["_attribute"] = this.decodeUInt8();

		return e;
	}

	public function encodecommonProperties(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt8(e["_propertyType"] as uint );
		this.encodeInt32(e["_propertyValue"] as int );

		return this;
	}

	public function decodecommonProperties():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_propertyType"] = this.decodeUInt8();
		e["_propertyValue"] = this.decodeInt32();

		return e;
	}

	public function encoderoleKongfu(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_commonProperties"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodecommonProperties(_ar[i]);

		this.encodeInt64(e["_kongfuInstanceID"] as Int64 );
		this.encodeUInt32(e["_kongfuLevelID"] as uint );
		this.encodeUInt32(e["_cultivation"] as uint );
		this.encodeUInt32(e["_levelupTime"] as uint );
		this.encodeUInt32(e["_kongfuID"] as uint );
		this.encodeUInt8(e["_isActive"] as uint );
		this.encodeUInt8(e["_quality"] as uint );
		this.encodeUInt8(e["_growthRate"] as uint );
		this.encodeUInt8(e["_isPaid"] as uint );

		return this;
	}

	public function decoderoleKongfu():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodecommonProperties());
		e["_commonProperties"] = _ar;
		e["_kongfuInstanceID"] = this.decodeInt64();
		e["_kongfuLevelID"] = this.decodeUInt32();
		e["_cultivation"] = this.decodeUInt32();
		e["_levelupTime"] = this.decodeUInt32();
		e["_kongfuID"] = this.decodeUInt32();
		e["_isActive"] = this.decodeUInt8();
		e["_quality"] = this.decodeUInt8();
		e["_growthRate"] = this.decodeUInt8();
		e["_isPaid"] = this.decodeUInt8();

		return e;
	}

	public function encodehole(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_gemID"] as uint );
		this.encodeUInt8(e["_openFlag"] as uint );

		return this;
	}

	public function decodehole():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_gemID"] = this.decodeUInt32();
		e["_openFlag"] = this.decodeUInt8();

		return e;
	}

	public function encoderefiningProperty(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_commonProperties"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodecommonProperties(_ar[i]);


		return this;
	}

	public function decoderefiningProperty():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodecommonProperties());
		e["_commonProperties"] = _ar;

		return e;
	}

	public function encodecurrencyInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_money"] as uint );
		this.encodeUInt32(e["_ingot"] as uint );

		return this;
	}

	public function decodecurrencyInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_money"] = this.decodeUInt32();
		e["_ingot"] = this.decodeUInt32();

		return e;
	}

	public function encoderoleEquip(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_holes"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodehole(_ar[i]);

		this.encoderefiningProperty(e["_refiningProperties"] as Object );
		this.encodeInt64(e["_instanceID"] as Int64 );
		this.encodeUInt16(e["_equipID"] as uint );
		this.encodeUInt8(e["_index"] as uint );
		this.encodeUInt8(e["_strengthLevel"] as uint );

		return this;
	}

	public function decoderoleEquip():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodehole());
		e["_holes"] = _ar;
		e["_refiningProperties"] = this.decoderefiningProperty();
		e["_instanceID"] = this.decodeInt64();
		e["_equipID"] = this.decodeUInt16();
		e["_index"] = this.decodeUInt8();
		e["_strengthLevel"] = this.decodeUInt8();

		return e;
	}

	public function encoderoleItem(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_timestamp"] as uint );
		this.encodeUInt16(e["_itemID"] as uint );
		this.encodeUInt8(e["_lapCnt"] as uint );
		this.encodeUInt8(e["_index"] as uint );

		return this;
	}

	public function decoderoleItem():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_timestamp"] = this.decodeUInt32();
		e["_itemID"] = this.decodeUInt16();
		e["_lapCnt"] = this.decodeUInt8();
		e["_index"] = this.decodeUInt8();

		return e;
	}

	public function encoderoleTaskItem(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt16(e["_taskitemID"] as uint );
		this.encodeUInt16(e["_taskID"] as uint );
		this.encodeUInt8(e["_lapCnt"] as uint );
		this.encodeUInt8(e["_index"] as uint );

		return this;
	}

	public function decoderoleTaskItem():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_taskitemID"] = this.decodeUInt16();
		e["_taskID"] = this.decodeUInt16();
		e["_lapCnt"] = this.decodeUInt8();
		e["_index"] = this.decodeUInt8();

		return e;
	}

	public function encodeitemList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_roleItems"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encoderoleItem(_ar[i]);


		return this;
	}

	public function decodeitemList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decoderoleItem());
		e["_roleItems"] = _ar;

		return e;
	}

	public function encodetaskItemList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_roleTaskItems"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encoderoleTaskItem(_ar[i]);


		return this;
	}

	public function decodetaskItemList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decoderoleTaskItem());
		e["_roleTaskItems"] = _ar;

		return e;
	}

	public function encodeimportantLists(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		var flags:uint = 0;
		if(e["_celebWeapon"])
		{
			flags |= 0x0001
		}
		if(e["_roleKongfu"])
		{
			flags |= 0x0002
		}
		if(e["_roleEquip"])
		{
			flags |= 0x0004
		}
		if(e["_roleItems"])
		{
			flags |= 0x0008
		}
		if(e["_roleTaskItems"])
		{
			flags |= 0x0010
		}
		if(e["_gems"])
		{
			flags |= 0x0020
		}
		if(flags & 0x0001)		{
		this.encodecelebWeapon(e["_celebWeapon"] as Object );
		}
		if(flags & 0x0002)		{

			_ar = e["_roleKongfu"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleKongfu(_ar[i]);

		}
		if(flags & 0x0004)		{

			_ar = e["_roleEquip"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleEquip(_ar[i]);

		}
		if(flags & 0x0008)		{

			_ar = e["_roleItems"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleItem(_ar[i]);

		}
		if(flags & 0x0010)		{

			_ar = e["_roleTaskItems"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleTaskItem(_ar[i]);

		}
		if(flags & 0x0020)		{

			_ar = e["_gems"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleItem(_ar[i]);

		}

		return this;
	}

	public function decodeimportantLists():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		var flags:uint = this.decodeUInt8();
		if(flags & 0x0001)
		{
			e["_celebWeapon"] = this.decodecelebWeapon();
		}
		if(flags & 0x0002)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleKongfu());
			e["_roleKongfu"] = _ar;
		}
		if(flags & 0x0004)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleEquip());
			e["_roleEquip"] = _ar;
		}
		if(flags & 0x0008)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleItem());
			e["_roleItems"] = _ar;
		}
		if(flags & 0x0010)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleTaskItem());
			e["_roleTaskItems"] = _ar;
		}
		if(flags & 0x0020)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleItem());
			e["_gems"] = _ar;
		}

		return e;
	}

	public function encodetaskState(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt16(e["_taskID"] as uint );

		_ar = e["_number"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeUInt8(_ar[i]);


		return this;
	}

	public function decodetaskState():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_taskID"] = this.decodeUInt16();
		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeUInt8());
		e["_number"] = _ar;

		return e;
	}

	public function encodenpcEmendation(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt16(e["_npcID"] as uint );
		this.encodeUInt16(e["_taskID"] as uint );
		this.encodeInt8(e["_flag"] as int );

		return this;
	}

	public function decodenpcEmendation():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_npcID"] = this.decodeUInt16();
		e["_taskID"] = this.decodeUInt16();
		e["_flag"] = this.decodeInt8();

		return e;
	}

	public function encodenpcEmendationList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_npcEmendations"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodenpcEmendation(_ar[i]);


		return this;
	}

	public function decodenpcEmendationList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodenpcEmendation());
		e["_npcEmendations"] = _ar;

		return e;
	}

	public function encodeonlinePlayer(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_str = e["_name"];
		len = _str.length;
		this.encodeUInt32(len);
		if(len != 0)
			this.encodeString(_str);

		this.encodeInt64(e["_playerID"] as Int64 );
		this.encodeUInt16(e["_level"] as uint );
		this.encodeUInt8(e["_sex"] as uint );

		return this;
	}

	public function decodeonlinePlayer():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		len = this.decodeUInt32();
		e["_name"] = this.decodeString(this.position,len);
		e["_playerID"] = this.decodeInt64();
		e["_level"] = this.decodeUInt16();
		e["_sex"] = this.decodeUInt8();

		return e;
	}

	public function encodeplayerList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_onlinePlayers"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeonlinePlayer(_ar[i]);


		return this;
	}

	public function decodeplayerList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeonlinePlayer());
		e["_onlinePlayers"] = _ar;

		return e;
	}

	public function encodedungeonOperation(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodescenePosition(e["_beginCo"] as Object );
		this.encodescenePosition(e["_endCo"] as Object );
		this.encodeUInt8(e["_operation"] as uint );

		return this;
	}

	public function decodedungeonOperation():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_beginCo"] = this.decodescenePosition();
		e["_endCo"] = this.decodescenePosition();
		e["_operation"] = this.decodeUInt8();

		return e;
	}

	public function encodedungeonPlayerStableInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		var flags:uint = 0;
		if(e["_name"])
		{
			flags |= 0x0001
		}
		if(e["_title"])
		{
			flags |= 0x0002
		}
		if(e["_celebWeapong"])
		{
			flags |= 0x0004
		}
		if(e["_activedKongfuList"])
		{
			flags |= 0x0008
		}
		if(e["_party"])
		{
			flags |= 0x0010
		}
		if(e["_fightPower"])
		{
			flags |= 0x0020
		}
		if(e["_robProtectedTime"])
		{
			flags |= 0x0040
		}
		if(e["_level"])
		{
			flags |= 0x0080
		}
		if(e["_speed"])
		{
			flags |= 0x0100
		}
		if(e["_jump"])
		{
			flags |= 0x0200
		}
		if(e["_qingkungTag"])
		{
			flags |= 0x0400
		}
		if(e["_forceID"])
		{
			flags |= 0x0800
		}
		if(e["_sex"])
		{
			flags |= 0x1000
		}
		if(e["_flagTag"])
		{
			flags |= 0x2000
		}
		if(flags & 0x0001)		{

			_str = e["_name"];
			len = _str.length;
			this.encodeUInt32(len);
			if(len != 0)
				this.encodeString(_str);

		}
		if(flags & 0x0002)		{

			_ar = e["_title"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encodeUInt32(_ar[i]);

		}
		if(flags & 0x0004)		{
		this.encodecelebWeapon(e["_celebWeapong"] as Object );
		}
		if(flags & 0x0008)		{

			_ar = e["_activedKongfuList"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encodeUInt32(_ar[i]);

		}
		if(flags & 0x0010)		{
		this.encodeUInt32(e["_party"] as uint );
		}
		if(flags & 0x0020)		{
		this.encodeUInt32(e["_fightPower"] as uint );
		}
		if(flags & 0x0040)		{
		this.encodeUInt32(e["_robProtectedTime"] as uint );
		}
		if(flags & 0x0080)		{
		this.encodeUInt16(e["_level"] as uint );
		}
		if(flags & 0x0100)		{
		this.encodeUInt16(e["_speed"] as uint );
		}
		if(flags & 0x0200)		{
		this.encodeUInt16(e["_jump"] as uint );
		}
		if(flags & 0x0400)		{
		this.encodeUInt8(e["_qingkungTag"] as uint );
		}
		if(flags & 0x0800)		{
		this.encodeUInt8(e["_forceID"] as uint );
		}
		if(flags & 0x1000)		{
		this.encodeUInt8(e["_sex"] as uint );
		}
		if(flags & 0x2000)		{
		this.encodeUInt8(e["_flagTag"] as uint );
		}

		return this;
	}

	public function decodedungeonPlayerStableInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		var flags:uint = this.decodeUInt16();
		if(flags & 0x0001)
		{
			len = this.decodeUInt32();
			e["_name"] = this.decodeString(this.position,len);
		}
		if(flags & 0x0002)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decodeUInt32());
			e["_title"] = _ar;
		}
		if(flags & 0x0004)
		{
			e["_celebWeapong"] = this.decodecelebWeapon();
		}
		if(flags & 0x0008)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decodeUInt32());
			e["_activedKongfuList"] = _ar;
		}
		if(flags & 0x0010)
		{
			e["_party"] = this.decodeUInt32();
		}
		if(flags & 0x0020)
		{
			e["_fightPower"] = this.decodeUInt32();
		}
		if(flags & 0x0040)
		{
			e["_robProtectedTime"] = this.decodeUInt32();
		}
		if(flags & 0x0080)
		{
			e["_level"] = this.decodeUInt16();
		}
		if(flags & 0x0100)
		{
			e["_speed"] = this.decodeUInt16();
		}
		if(flags & 0x0200)
		{
			e["_jump"] = this.decodeUInt16();
		}
		if(flags & 0x0400)
		{
			e["_qingkungTag"] = this.decodeUInt8();
		}
		if(flags & 0x0800)
		{
			e["_forceID"] = this.decodeUInt8();
		}
		if(flags & 0x1000)
		{
			e["_sex"] = this.decodeUInt8();
		}
		if(flags & 0x2000)
		{
			e["_flagTag"] = this.decodeUInt8();
		}

		return e;
	}

	public function encodedungeonOperationList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_operations"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodedungeonOperation(_ar[i]);


		return this;
	}

	public function decodedungeonOperationList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodedungeonOperation());
		e["_operations"] = _ar;

		return e;
	}

	public function encodechangedTask(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodetaskState(e["_taskState"] as Object );
		this.encodeUInt8(e["_flag"] as uint );

		return this;
	}

	public function decodechangedTask():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_taskState"] = this.decodetaskState();
		e["_flag"] = this.decodeUInt8();

		return e;
	}

	public function encodedungeonStepRange(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt8(e["_dungeonStepMax"] as uint );
		this.encodeUInt8(e["_dungeonStepMin"] as uint );

		return this;
	}

	public function decodedungeonStepRange():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_dungeonStepMax"] = this.decodeUInt8();
		e["_dungeonStepMin"] = this.decodeUInt8();

		return e;
	}

	public function encodesettleResult(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		var flags:uint = 0;
		if(e["_playerInfoBasic"])
		{
			flags |= 0x0001
		}
		if(e["_newEquips"])
		{
			flags |= 0x0002
		}
		if(e["_lostEquips"])
		{
			flags |= 0x0004
		}
		if(e["_newItems"])
		{
			flags |= 0x0008
		}
		if(e["_lostItems"])
		{
			flags |= 0x0010
		}
		if(e["_newGems"])
		{
			flags |= 0x0020
		}
		if(e["_lostGems"])
		{
			flags |= 0x0040
		}
		if(e["_newTaskItems"])
		{
			flags |= 0x0080
		}
		if(e["_lostTaskItems"])
		{
			flags |= 0x0100
		}
		if(e["_canAcceptTaskChangeList"])
		{
			flags |= 0x0200
		}
		if(e["_hasAcceptedTaskChangeList"])
		{
			flags |= 0x0400
		}
		if(e["_celebWeapon"])
		{
			flags |= 0x0800
		}
		if(e["_newKongfus"])
		{
			flags |= 0x1000
		}
		if(e["_lostKongfus"])
		{
			flags |= 0x2000
		}
		if(e["_newPosition"])
		{
			flags |= 0x4000
		}
		if(e["_newMapPosition"])
		{
			flags |= 0x8000
		}
		if(e["_dungeonStepRange"])
		{
			flags |= 0x10000
		}
		if(e["_score"])
		{
			flags |= 0x20000
		}
		if(e["_campScore"])
		{
			flags |= 0x40000
		}
		if(e["_allScore"])
		{
			flags |= 0x80000
		}
		if(e["_newDungeonType"])
		{
			flags |= 0x100000
		}
		if(e["_monsterId"])
		{
			flags |= 0x200000
		}
		if(e["_lineNumber"])
		{
			flags |= 0x400000
		}
		if(flags & 0x0001)		{
		this.encodeplayerInfoBasic(e["_playerInfoBasic"] as Object );
		}
		if(flags & 0x0002)		{

			_ar = e["_newEquips"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleEquip(_ar[i]);

		}
		if(flags & 0x0004)		{

			_ar = e["_lostEquips"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleEquip(_ar[i]);

		}
		if(flags & 0x0008)		{

			_ar = e["_newItems"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleItem(_ar[i]);

		}
		if(flags & 0x0010)		{

			_ar = e["_lostItems"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleItem(_ar[i]);

		}
		if(flags & 0x0020)		{

			_ar = e["_newGems"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleItem(_ar[i]);

		}
		if(flags & 0x0040)		{

			_ar = e["_lostGems"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleItem(_ar[i]);

		}
		if(flags & 0x0080)		{

			_ar = e["_newTaskItems"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleTaskItem(_ar[i]);

		}
		if(flags & 0x0100)		{

			_ar = e["_lostTaskItems"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleTaskItem(_ar[i]);

		}
		if(flags & 0x0200)		{

			_ar = e["_canAcceptTaskChangeList"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encodechangedTask(_ar[i]);

		}
		if(flags & 0x0400)		{

			_ar = e["_hasAcceptedTaskChangeList"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encodechangedTask(_ar[i]);

		}
		if(flags & 0x0800)		{
		this.encodecelebWeapon(e["_celebWeapon"] as Object );
		}
		if(flags & 0x1000)		{

			_ar = e["_newKongfus"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleKongfu(_ar[i]);

		}
		if(flags & 0x2000)		{

			_ar = e["_lostKongfus"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderoleKongfu(_ar[i]);

		}
		if(flags & 0x4000)		{
		this.encodedungeonPosition(e["_newPosition"] as Object );
		}
		if(flags & 0x8000)		{
		this.encodemapPosition(e["_newMapPosition"] as Object );
		}
		if(flags & 0x10000)		{
		this.encodedungeonStepRange(e["_dungeonStepRange"] as Object );
		}
		if(flags & 0x20000)		{
		this.encodeUInt32(e["_score"] as uint );
		}
		if(flags & 0x40000)		{
		this.encodeUInt32(e["_campScore"] as uint );
		}
		if(flags & 0x80000)		{
		this.encodeUInt32(e["_allScore"] as uint );
		}
		if(flags & 0x100000)		{
		this.encodeUInt16(e["_newDungeonType"] as uint );
		}
		if(flags & 0x200000)		{
		this.encodeUInt16(e["_monsterId"] as uint );
		}
		if(flags & 0x400000)		{
		this.encodeUInt8(e["_lineNumber"] as uint );
		}

		return this;
	}

	public function decodesettleResult():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		var flags:uint = this.decodeUInt32();
		if(flags & 0x0001)
		{
			e["_playerInfoBasic"] = this.decodeplayerInfoBasic();
		}
		if(flags & 0x0002)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleEquip());
			e["_newEquips"] = _ar;
		}
		if(flags & 0x0004)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleEquip());
			e["_lostEquips"] = _ar;
		}
		if(flags & 0x0008)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleItem());
			e["_newItems"] = _ar;
		}
		if(flags & 0x0010)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleItem());
			e["_lostItems"] = _ar;
		}
		if(flags & 0x0020)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleItem());
			e["_newGems"] = _ar;
		}
		if(flags & 0x0040)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleItem());
			e["_lostGems"] = _ar;
		}
		if(flags & 0x0080)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleTaskItem());
			e["_newTaskItems"] = _ar;
		}
		if(flags & 0x0100)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleTaskItem());
			e["_lostTaskItems"] = _ar;
		}
		if(flags & 0x0200)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decodechangedTask());
			e["_canAcceptTaskChangeList"] = _ar;
		}
		if(flags & 0x0400)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decodechangedTask());
			e["_hasAcceptedTaskChangeList"] = _ar;
		}
		if(flags & 0x0800)
		{
			e["_celebWeapon"] = this.decodecelebWeapon();
		}
		if(flags & 0x1000)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleKongfu());
			e["_newKongfus"] = _ar;
		}
		if(flags & 0x2000)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderoleKongfu());
			e["_lostKongfus"] = _ar;
		}
		if(flags & 0x4000)
		{
			e["_newPosition"] = this.decodedungeonPosition();
		}
		if(flags & 0x8000)
		{
			e["_newMapPosition"] = this.decodemapPosition();
		}
		if(flags & 0x10000)
		{
			e["_dungeonStepRange"] = this.decodedungeonStepRange();
		}
		if(flags & 0x20000)
		{
			e["_score"] = this.decodeUInt32();
		}
		if(flags & 0x40000)
		{
			e["_campScore"] = this.decodeUInt32();
		}
		if(flags & 0x80000)
		{
			e["_allScore"] = this.decodeUInt32();
		}
		if(flags & 0x100000)
		{
			e["_newDungeonType"] = this.decodeUInt16();
		}
		if(flags & 0x200000)
		{
			e["_monsterId"] = this.decodeUInt16();
		}
		if(flags & 0x400000)
		{
			e["_lineNumber"] = this.decodeUInt8();
		}

		return e;
	}

	public function encodeaccountData(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_str = e["_account"];
		len = _str.length;
		this.encodeUInt32(len);
		if(len != 0)
			this.encodeString(_str);


		_str = e["_password"];
		len = _str.length;
		this.encodeUInt32(len);
		if(len != 0)
			this.encodeString(_str);

		this.encodeUInt8(e["_category"] as uint );

		return this;
	}

	public function decodeaccountData():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		len = this.decodeUInt32();
		e["_account"] = this.decodeString(this.position,len);
		len = this.decodeUInt32();
		e["_password"] = this.decodeString(this.position,len);
		e["_category"] = this.decodeUInt8();

		return e;
	}

	public function encodecanAcceptTaskList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_taskIds"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeUInt16(_ar[i]);


		return this;
	}

	public function decodecanAcceptTaskList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeUInt16());
		e["_taskIds"] = _ar;

		return e;
	}

	public function encodehasAcceptedTask(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt16(e["_taskId"] as uint );

		_ar = e["_progresses"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeUInt8(_ar[i]);

		this.encodeUInt8(e["_isFinished"] as uint );
		this.encodeUInt8(e["_isEnableFinish"] as uint );

		return this;
	}

	public function decodehasAcceptedTask():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_taskId"] = this.decodeUInt16();
		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeUInt8());
		e["_progresses"] = _ar;
		e["_isFinished"] = this.decodeUInt8();
		e["_isEnableFinish"] = this.decodeUInt8();

		return e;
	}

	public function encodehasAcceptedTaskList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_taskStates"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodehasAcceptedTask(_ar[i]);

		this.encodeUInt8(e["_mainTaskNum"] as uint );
		this.encodeUInt8(e["_extensionTaskNum"] as uint );

		return this;
	}

	public function decodehasAcceptedTaskList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodehasAcceptedTask());
		e["_taskStates"] = _ar;
		e["_mainTaskNum"] = this.decodeUInt8();
		e["_extensionTaskNum"] = this.decodeUInt8();

		return e;
	}

	public function encodeactivedTaskList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		var flags:uint = 0;
		if(e["_canAcceptTaskList"])
		{
			flags |= 0x0001
		}
		if(e["_hasAcceptedTaskList"])
		{
			flags |= 0x0002
		}
		if(flags & 0x0001)		{
		this.encodecanAcceptTaskList(e["_canAcceptTaskList"] as Object );
		}
		if(flags & 0x0002)		{
		this.encodehasAcceptedTaskList(e["_hasAcceptedTaskList"] as Object );
		}

		return this;
	}

	public function decodeactivedTaskList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		var flags:uint = this.decodeUInt8();
		if(flags & 0x0001)
		{
			e["_canAcceptTaskList"] = this.decodecanAcceptTaskList();
		}
		if(flags & 0x0002)
		{
			e["_hasAcceptedTaskList"] = this.decodehasAcceptedTaskList();
		}

		return e;
	}

	public function encodekongfuLevelUp(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		var flags:uint = 0;
		if(e["_basicProperties"])
		{
			flags |= 0x0001
		}
		if(e["_attack"])
		{
			flags |= 0x0002
		}
		if(e["_secondPropertiesComplex"])
		{
			flags |= 0x0004
		}
		if(e["_secondPropertiesSimple"])
		{
			flags |= 0x0008
		}
		if(flags & 0x0001)		{
		this.encodebasicProperties(e["_basicProperties"] as Object );
		}
		if(flags & 0x0002)		{
		this.encoderangeA(e["_attack"] as Object );
		}
		if(flags & 0x0004)		{
		this.encodesecondPropertiesComplex(e["_secondPropertiesComplex"] as Object );
		}
		if(flags & 0x0008)		{
		this.encodesecondPropertiesSimple(e["_secondPropertiesSimple"] as Object );
		}

		return this;
	}

	public function decodekongfuLevelUp():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		var flags:uint = this.decodeUInt8();
		if(flags & 0x0001)
		{
			e["_basicProperties"] = this.decodebasicProperties();
		}
		if(flags & 0x0002)
		{
			e["_attack"] = this.decoderangeA();
		}
		if(flags & 0x0004)
		{
			e["_secondPropertiesComplex"] = this.decodesecondPropertiesComplex();
		}
		if(flags & 0x0008)
		{
			e["_secondPropertiesSimple"] = this.decodesecondPropertiesSimple();
		}

		return e;
	}

	public function encodedungeonUpdate(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeInt64(e["_dungeonObjectID"] as Int64 );
		this.encodeUInt8(e["_playerNumber"] as uint );
		this.encodeUInt8(e["_time"] as uint );

		return this;
	}

	public function decodedungeonUpdate():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_dungeonObjectID"] = this.decodeInt64();
		e["_playerNumber"] = this.decodeUInt8();
		e["_time"] = this.decodeUInt8();

		return e;
	}

	public function encodedungeonUpdateList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_dungeonUpdates"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodedungeonUpdate(_ar[i]);


		return this;
	}

	public function decodedungeonUpdateList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodedungeonUpdate());
		e["_dungeonUpdates"] = _ar;

		return e;
	}

	public function encodedungeonPlayerUpdate(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		var flags:uint = 0;
		if(e["_dungeonOperation"])
		{
			flags |= 0x0001
		}
		if(e["_dungeonPlayerStableInfo"])
		{
			flags |= 0x0002
		}
		if(e["_playerID"])
		{
			flags |= 0x0004
		}
		if(e["_fightId"])
		{
			flags |= 0x0008
		}
		if(e["_state"])
		{
			flags |= 0x0010
		}
		if(e["_attackProtectFlag"])
		{
			flags |= 0x0020
		}
		if(flags & 0x0001)		{
		this.encodedungeonOperation(e["_dungeonOperation"] as Object );
		}
		if(flags & 0x0002)		{
		this.encodedungeonPlayerStableInfo(e["_dungeonPlayerStableInfo"] as Object );
		}
		if(flags & 0x0004)		{
		this.encodeInt64(e["_playerID"] as Int64 );
		}
		if(flags & 0x0008)		{
		this.encodeInt64(e["_fightId"] as Int64 );
		}
		if(flags & 0x0010)		{
		this.encodeUInt8(e["_state"] as uint );
		}
		if(flags & 0x0020)		{
		this.encodeUInt8(e["_attackProtectFlag"] as uint );
		}

		return this;
	}

	public function decodedungeonPlayerUpdate():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		var flags:uint = this.decodeUInt8();
		if(flags & 0x0001)
		{
			e["_dungeonOperation"] = this.decodedungeonOperation();
		}
		if(flags & 0x0002)
		{
			e["_dungeonPlayerStableInfo"] = this.decodedungeonPlayerStableInfo();
		}
		if(flags & 0x0004)
		{
			e["_playerID"] = this.decodeInt64();
		}
		if(flags & 0x0008)
		{
			e["_fightId"] = this.decodeInt64();
		}
		if(flags & 0x0010)
		{
			e["_state"] = this.decodeUInt8();
		}
		if(flags & 0x0020)
		{
			e["_attackProtectFlag"] = this.decodeUInt8();
		}

		return e;
	}

	public function encodedungeonPlayerUpdateList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_dungeonPlayerUpdates"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodedungeonPlayerUpdate(_ar[i]);

		this.encodeUInt8(e["_updateFlag"] as uint );

		return this;
	}

	public function decodedungeonPlayerUpdateList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodedungeonPlayerUpdate());
		e["_dungeonPlayerUpdates"] = _ar;
		e["_updateFlag"] = this.decodeUInt8();

		return e;
	}

	public function encodedungeonTriggerStateUpdate(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeInt64(e["_fightId"] as Int64 );

		_ar = e["_parameters"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeUInt32(_ar[i]);

		this.encodeUInt16(e["_triggerObjectID"] as uint );
		this.encodeUInt8(e["_state"] as uint );

		return this;
	}

	public function decodedungeonTriggerStateUpdate():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_fightId"] = this.decodeInt64();
		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeUInt32());
		e["_parameters"] = _ar;
		e["_triggerObjectID"] = this.decodeUInt16();
		e["_state"] = this.decodeUInt8();

		return e;
	}

	public function encodedungeonTriggerStateUpdateList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_dungeonTriggerStateUpdates"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodedungeonTriggerStateUpdate(_ar[i]);


		return this;
	}

	public function decodedungeonTriggerStateUpdateList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodedungeonTriggerStateUpdate());
		e["_dungeonTriggerStateUpdates"] = _ar;

		return e;
	}

	public function encodedungeonTriggerPositionUpdate(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodescenePosition(e["_scenePosition"] as Object );
		this.encodeUInt16(e["_triggerObjectID"] as uint );

		return this;
	}

	public function decodedungeonTriggerPositionUpdate():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_scenePosition"] = this.decodescenePosition();
		e["_triggerObjectID"] = this.decodeUInt16();

		return e;
	}

	public function encodedungeonTriggerPositionUpdateList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_dungeonTriggerPositionUpdates"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodedungeonTriggerPositionUpdate(_ar[i]);


		return this;
	}

	public function decodedungeonTriggerPositionUpdateList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodedungeonTriggerPositionUpdate());
		e["_dungeonTriggerPositionUpdates"] = _ar;

		return e;
	}

	public function encodedungeonTrigger(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodescenePosition(e["_scenePosition"] as Object );
		this.encodeInt64(e["_fightId"] as Int64 );
		this.encodeUInt32(e["_triggerID"] as uint );

		_ar = e["_parameters"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeUInt32(_ar[i]);

		this.encodeUInt16(e["_triggerObjectID"] as uint );
		this.encodeUInt8(e["_state"] as uint );

		return this;
	}

	public function decodedungeonTrigger():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_scenePosition"] = this.decodescenePosition();
		e["_fightId"] = this.decodeInt64();
		e["_triggerID"] = this.decodeUInt32();
		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeUInt32());
		e["_parameters"] = _ar;
		e["_triggerObjectID"] = this.decodeUInt16();
		e["_state"] = this.decodeUInt8();

		return e;
	}

	public function encodedungeonTriggerList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_dungeonTriggers"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodedungeonTrigger(_ar[i]);


		return this;
	}

	public function decodedungeonTriggerList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodedungeonTrigger());
		e["_dungeonTriggers"] = _ar;

		return e;
	}

	public function encodetaskTrigger(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodescenePosition(e["_scenePosition"] as Object );
		this.encodeUInt16(e["_triggerID"] as uint );
		this.encodeUInt16(e["_taskID"] as uint );

		return this;
	}

	public function decodetaskTrigger():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_scenePosition"] = this.decodescenePosition();
		e["_triggerID"] = this.decodeUInt16();
		e["_taskID"] = this.decodeUInt16();

		return e;
	}

	public function encodetaskTriggerList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_taskTriggers"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodetaskTrigger(_ar[i]);


		return this;
	}

	public function decodetaskTriggerList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodetaskTrigger());
		e["_taskTriggers"] = _ar;

		return e;
	}

	public function encodetriggerIdList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_triggerID"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeUInt16(_ar[i]);


		return this;
	}

	public function decodetriggerIdList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeUInt16());
		e["_triggerID"] = _ar;

		return e;
	}

	public function encoderobInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_str = e["_robPlayerName"];
		len = _str.length;
		this.encodeUInt32(len);
		if(len != 0)
			this.encodeString(_str);

		this.encodeInt64(e["_robFightID"] as Int64 );
		this.encodeUInt32(e["_robPotentialEn"] as uint );
		this.encodeUInt8(e["_robFightResult"] as uint );

		return this;
	}

	public function decoderobInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		len = this.decodeUInt32();
		e["_robPlayerName"] = this.decodeString(this.position,len);
		e["_robFightID"] = this.decodeInt64();
		e["_robPotentialEn"] = this.decodeUInt32();
		e["_robFightResult"] = this.decodeUInt8();

		return e;
	}

	public function encodetriggerObjectsUpdateList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		var flags:uint = 0;
		if(e["_dungeonPlayerUpdateList"])
		{
			flags |= 0x0001
		}
		if(e["_dungeonTriggerStateUpdateList"])
		{
			flags |= 0x0002
		}
		if(e["_dungeonTriggerPositionUpdateList"])
		{
			flags |= 0x0004
		}
		if(e["_settleResult"])
		{
			flags |= 0x0008
		}
		if(e["_robInfo"])
		{
			flags |= 0x0010
		}
		if(e["_fightId"])
		{
			flags |= 0x0020
		}
		if(e["_monsterObjectId"])
		{
			flags |= 0x0040
		}
		if(e["_flag"])
		{
			flags |= 0x0080
		}
		if(e["_attackProtectFlag"])
		{
			flags |= 0x0100
		}
		if(e["_playerState"])
		{
			flags |= 0x0200
		}
		if(e["_dungeonStep"])
		{
			flags |= 0x0400
		}
		if(e["_qingkungTag"])
		{
			flags |= 0x0800
		}
		if(flags & 0x0001)		{
		this.encodedungeonPlayerUpdateList(e["_dungeonPlayerUpdateList"] as Object );
		}
		if(flags & 0x0002)		{
		this.encodedungeonTriggerStateUpdateList(e["_dungeonTriggerStateUpdateList"] as Object );
		}
		if(flags & 0x0004)		{
		this.encodedungeonTriggerPositionUpdateList(e["_dungeonTriggerPositionUpdateList"] as Object );
		}
		if(flags & 0x0008)		{
		this.encodesettleResult(e["_settleResult"] as Object );
		}
		if(flags & 0x0010)		{

			_ar = e["_robInfo"]
			this.encodeUInt32(_ar.length);
			for(i = 0 ; i < _ar.length; i++)
				this.encoderobInfo(_ar[i]);

		}
		if(flags & 0x0020)		{
		this.encodeInt64(e["_fightId"] as Int64 );
		}
		if(flags & 0x0040)		{
		this.encodeUInt16(e["_monsterObjectId"] as uint );
		}
		if(flags & 0x0080)		{
		this.encodeUInt8(e["_flag"] as uint );
		}
		if(flags & 0x0100)		{
		this.encodeUInt8(e["_attackProtectFlag"] as uint );
		}
		if(flags & 0x0200)		{
		this.encodeUInt8(e["_playerState"] as uint );
		}
		if(flags & 0x0400)		{
		this.encodeUInt8(e["_dungeonStep"] as uint );
		}
		if(flags & 0x0800)		{
		this.encodeUInt8(e["_qingkungTag"] as uint );
		}

		return this;
	}

	public function decodetriggerObjectsUpdateList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		var flags:uint = this.decodeUInt16();
		if(flags & 0x0001)
		{
			e["_dungeonPlayerUpdateList"] = this.decodedungeonPlayerUpdateList();
		}
		if(flags & 0x0002)
		{
			e["_dungeonTriggerStateUpdateList"] = this.decodedungeonTriggerStateUpdateList();
		}
		if(flags & 0x0004)
		{
			e["_dungeonTriggerPositionUpdateList"] = this.decodedungeonTriggerPositionUpdateList();
		}
		if(flags & 0x0008)
		{
			e["_settleResult"] = this.decodesettleResult();
		}
		if(flags & 0x0010)
		{
			_ar = new Array();
			len = this.decodeUInt32();
			for(i = 0; i < len; i++)
				_ar.push(this.decoderobInfo());
			e["_robInfo"] = _ar;
		}
		if(flags & 0x0020)
		{
			e["_fightId"] = this.decodeInt64();
		}
		if(flags & 0x0040)
		{
			e["_monsterObjectId"] = this.decodeUInt16();
		}
		if(flags & 0x0080)
		{
			e["_flag"] = this.decodeUInt8();
		}
		if(flags & 0x0100)
		{
			e["_attackProtectFlag"] = this.decodeUInt8();
		}
		if(flags & 0x0200)
		{
			e["_playerState"] = this.decodeUInt8();
		}
		if(flags & 0x0400)
		{
			e["_dungeonStep"] = this.decodeUInt8();
		}
		if(flags & 0x0800)
		{
			e["_qingkungTag"] = this.decodeUInt8();
		}

		return e;
	}

	public function encodeopponentInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encoderoleKongfu(e["_roleKongfu"] as Object );

		_str = e["_name"];
		len = _str.length;
		this.encodeUInt32(len);
		if(len != 0)
			this.encodeString(_str);

		this.encodeInt64(e["_opponentID"] as Int64 );
		this.encodeUInt32(e["_level"] as uint );
		this.encodeUInt32(e["_hp"] as uint );
		this.encodeUInt32(e["_mp"] as uint );
		this.encodeUInt32(e["_maxHp"] as uint );
		this.encodeUInt32(e["_maxMp"] as uint );
		this.encodeUInt32(e["_party"] as uint );
		this.encodeUInt32(e["_addStrengthValue"] as uint );
		this.encodeUInt8(e["_opponentType"] as uint );
		this.encodeUInt8(e["_sex"] as uint );
		this.encodeUInt8(e["_forceID"] as uint );

		return this;
	}

	public function decodeopponentInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_roleKongfu"] = this.decoderoleKongfu();
		len = this.decodeUInt32();
		e["_name"] = this.decodeString(this.position,len);
		e["_opponentID"] = this.decodeInt64();
		e["_level"] = this.decodeUInt32();
		e["_hp"] = this.decodeUInt32();
		e["_mp"] = this.decodeUInt32();
		e["_maxHp"] = this.decodeUInt32();
		e["_maxMp"] = this.decodeUInt32();
		e["_party"] = this.decodeUInt32();
		e["_addStrengthValue"] = this.decodeUInt32();
		e["_opponentType"] = this.decodeUInt8();
		e["_sex"] = this.decodeUInt8();
		e["_forceID"] = this.decodeUInt8();

		return e;
	}

	public function encodeplayerActionData(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_currentHP"] as uint );
		this.encodeUInt32(e["_currentMP"] as uint );
		this.encodeUInt32(e["_anger"] as uint );
		this.encodeFloat(e["_cdFixedTime"] as Number );
		this.encodeUInt16(e["_currentAP"] as uint );
		this.encodeUInt8(e["_currentComboCount"] as uint );

		return this;
	}

	public function decodeplayerActionData():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_currentHP"] = this.decodeUInt32();
		e["_currentMP"] = this.decodeUInt32();
		e["_anger"] = this.decodeUInt32();
		e["_cdFixedTime"] = this.decodeFloat();
		e["_currentAP"] = this.decodeUInt16();
		e["_currentComboCount"] = this.decodeUInt8();

		return e;
	}

	public function encodeaction(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeplayerActionData(e["_myPlayerActionData"] as Object );
		this.encodeplayerActionData(e["_otherPlayerActionData"] as Object );
		this.encodeUInt32(e["_aSkillId"] as uint );
		this.encodeUInt32(e["_dSkillId"] as uint );
		this.encodeUInt32(e["_addStrength"] as uint );
		this.encodeUInt16(e["_hpLost"] as uint );
		this.encodeUInt16(e["_attacker"] as uint );
		this.encodeUInt8(e["_attackType"] as uint );
		this.encodeUInt8(e["_defenseType"] as uint );
		this.encodeUInt8(e["_fightResult"] as uint );
		this.encodeUInt8(e["_comboIsStop"] as uint );

		return this;
	}

	public function decodeaction():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_myPlayerActionData"] = this.decodeplayerActionData();
		e["_otherPlayerActionData"] = this.decodeplayerActionData();
		e["_aSkillId"] = this.decodeUInt32();
		e["_dSkillId"] = this.decodeUInt32();
		e["_addStrength"] = this.decodeUInt32();
		e["_hpLost"] = this.decodeUInt16();
		e["_attacker"] = this.decodeUInt16();
		e["_attackType"] = this.decodeUInt8();
		e["_defenseType"] = this.decodeUInt8();
		e["_fightResult"] = this.decodeUInt8();
		e["_comboIsStop"] = this.decodeUInt8();

		return e;
	}

	public function encodeshopItem(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_itemID"] as uint );
		this.encodeUInt32(e["_number"] as uint );
		this.encodeUInt32(e["_price"] as uint );
		this.encodeUInt8(e["_itemType"] as uint );
		this.encodeUInt8(e["_moneyType"] as uint );

		return this;
	}

	public function decodeshopItem():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_itemID"] = this.decodeUInt32();
		e["_number"] = this.decodeUInt32();
		e["_price"] = this.decodeUInt32();
		e["_itemType"] = this.decodeUInt8();
		e["_moneyType"] = this.decodeUInt8();

		return e;
	}

	public function encodeshopItemList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_item"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeshopItem(_ar[i]);


		return this;
	}

	public function decodeshopItemList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeshopItem());
		e["_item"] = _ar;

		return e;
	}

	public function encodeshopItemDetail(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeshopItem(e["_shopItem"] as Object );
		this.encodeUInt16(e["_shopID"] as uint );
		this.encodeUInt16(e["_bagIndex"] as uint );

		return this;
	}

	public function decodeshopItemDetail():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_shopItem"] = this.decodeshopItem();
		e["_shopID"] = this.decodeUInt16();
		e["_bagIndex"] = this.decodeUInt16();

		return e;
	}

	public function encodedungeonPlayerScoreInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_str = e["_name"];
		len = _str.length;
		this.encodeUInt32(len);
		if(len != 0)
			this.encodeString(_str);

		this.encodeUInt32(e["_score"] as uint );
		this.encodeUInt32(e["_additionalScore"] as uint );
		this.encodeUInt32(e["_killNumber"] as uint );
		this.encodeUInt16(e["_deadNumber"] as uint );
		this.encodeUInt16(e["_pkNumber"] as uint );
		this.encodeUInt8(e["_forceID"] as uint );
		this.encodeUInt8(e["_camp"] as uint );

		return this;
	}

	public function decodedungeonPlayerScoreInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		len = this.decodeUInt32();
		e["_name"] = this.decodeString(this.position,len);
		e["_score"] = this.decodeUInt32();
		e["_additionalScore"] = this.decodeUInt32();
		e["_killNumber"] = this.decodeUInt32();
		e["_deadNumber"] = this.decodeUInt16();
		e["_pkNumber"] = this.decodeUInt16();
		e["_forceID"] = this.decodeUInt8();
		e["_camp"] = this.decodeUInt8();

		return e;
	}

	public function encodedungeonPlayerScoreInfoList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_dungeonPlayerScoreInfos"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodedungeonPlayerScoreInfo(_ar[i]);


		return this;
	}

	public function decodedungeonPlayerScoreInfoList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodedungeonPlayerScoreInfo());
		e["_dungeonPlayerScoreInfos"] = _ar;

		return e;
	}

	public function encodedungeonPlayerScoreInfoPlane(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodedungeonPlayerScoreInfoList(e["_dungeonPlayerScoreInfoList"] as Object );
		this.encodeUInt32(e["_time"] as uint );

		return this;
	}

	public function decodedungeonPlayerScoreInfoPlane():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_dungeonPlayerScoreInfoList"] = this.decodedungeonPlayerScoreInfoList();
		e["_time"] = this.decodeUInt32();

		return e;
	}

	public function encodekongfuShopPaidRefreshInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_currentRefreshId"] as uint );
		this.encodeUInt32(e["_currentRefreshCount"] as uint );
		this.encodeUInt32(e["_refreshTime"] as uint );
		this.encodeUInt16(e["_kongfuRefreshCount"] as uint );

		return this;
	}

	public function decodekongfuShopPaidRefreshInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_currentRefreshId"] = this.decodeUInt32();
		e["_currentRefreshCount"] = this.decodeUInt32();
		e["_refreshTime"] = this.decodeUInt32();
		e["_kongfuRefreshCount"] = this.decodeUInt16();

		return e;
	}

	public function encodekongfuShopFreeRefreshInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_refreshTime"] as uint );

		return this;
	}

	public function decodekongfuShopFreeRefreshInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_refreshTime"] = this.decodeUInt32();

		return e;
	}

	public function encodecurrency(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeInt32(e["_currencyAmount"] as int );
		this.encodeUInt8(e["_currencyType"] as uint );

		return this;
	}

	public function decodecurrency():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_currencyAmount"] = this.decodeInt32();
		e["_currencyType"] = this.decodeUInt8();

		return e;
	}

	public function encodeaddProperties(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt8(e["_propertyType"] as uint );
		this.encodeUInt8(e["_propertyValue"] as uint );

		return this;
	}

	public function decodeaddProperties():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_propertyType"] = this.decodeUInt8();
		e["_propertyValue"] = this.decodeUInt8();

		return e;
	}

	public function encodekongfuBook(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_commonProperties"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodecommonProperties(_ar[i]);

		this.encodecurrency(e["_currency"] as Object );
		this.encodeUInt32(e["_kongfuId"] as uint );
		this.encodeUInt8(e["_quality"] as uint );
		this.encodeUInt8(e["_growthRate"] as uint );
		this.encodeUInt8(e["_flag"] as uint );

		return this;
	}

	public function decodekongfuBook():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodecommonProperties());
		e["_commonProperties"] = _ar;
		e["_currency"] = this.decodecurrency();
		e["_kongfuId"] = this.decodeUInt32();
		e["_quality"] = this.decodeUInt8();
		e["_growthRate"] = this.decodeUInt8();
		e["_flag"] = this.decodeUInt8();

		return e;
	}

	public function encodekongfuBookList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_kongfuBook"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodekongfuBook(_ar[i]);


		return this;
	}

	public function decodekongfuBookList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodekongfuBook());
		e["_kongfuBook"] = _ar;

		return e;
	}

	public function encodekongfuShopInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodekongfuBookList(e["_kongfuBookList"] as Object );
		this.encodekongfuShopFreeRefreshInfo(e["_kongfuShopFreeRefreshInfo"] as Object );
		this.encodekongfuShopPaidRefreshInfo(e["_kongfuShopPaidRefreshInfo"] as Object );
		this.encodeUInt8(e["_shopID"] as uint );

		return this;
	}

	public function decodekongfuShopInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_kongfuBookList"] = this.decodekongfuBookList();
		e["_kongfuShopFreeRefreshInfo"] = this.decodekongfuShopFreeRefreshInfo();
		e["_kongfuShopPaidRefreshInfo"] = this.decodekongfuShopPaidRefreshInfo();
		e["_shopID"] = this.decodeUInt8();

		return e;
	}

	public function encodevisitedMaps(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_flags"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeUInt32(_ar[i]);


		return this;
	}

	public function decodevisitedMaps():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeUInt32());
		e["_flags"] = _ar;

		return e;
	}

	public function encodecdFixedTime(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeFloat(e["_cdFixedTime"] as Number );

		return this;
	}

	public function decodecdFixedTime():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_cdFixedTime"] = this.decodeFloat();

		return e;
	}

	public function encodedailyTask(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt16(e["_taskID"] as uint );
		this.encodeUInt8(e["_taskFlag"] as uint );

		return this;
	}

	public function decodedailyTask():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_taskID"] = this.decodeUInt16();
		e["_taskFlag"] = this.decodeUInt8();

		return e;
	}

	public function encodedailyTaskList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_taskID"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodedailyTask(_ar[i]);


		return this;
	}

	public function decodedailyTaskList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodedailyTask());
		e["_taskID"] = _ar;

		return e;
	}

	public function encodedailyTaskPaidRefreshInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_currentRefreshId"] as uint );
		this.encodeUInt32(e["_currentRefreshCount"] as uint );
		this.encodeUInt32(e["_refreshTime"] as uint );

		return this;
	}

	public function decodedailyTaskPaidRefreshInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_currentRefreshId"] = this.decodeUInt32();
		e["_currentRefreshCount"] = this.decodeUInt32();
		e["_refreshTime"] = this.decodeUInt32();

		return e;
	}

	public function encodedailyTaskFreeRefreshInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_refreshTime"] as uint );

		return this;
	}

	public function decodedailyTaskFreeRefreshInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_refreshTime"] = this.decodeUInt32();

		return e;
	}

	public function encodeenterTimes(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_timestamp"] as uint );
		this.encodeUInt16(e["_dungeonTypeID"] as uint );
		this.encodeUInt8(e["_enterTimes"] as uint );

		return this;
	}

	public function decodeenterTimes():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_timestamp"] = this.decodeUInt32();
		e["_dungeonTypeID"] = this.decodeUInt16();
		e["_enterTimes"] = this.decodeUInt8();

		return e;
	}

	public function encodeenterTimesList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_enterTimes"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeenterTimes(_ar[i]);


		return this;
	}

	public function decodeenterTimesList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeenterTimes());
		e["_enterTimes"] = _ar;

		return e;
	}

	public function encodedungeonGroupEnter(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_timestamp"] as uint );
		this.encodeUInt8(e["_dungeonGroupID"] as uint );
		this.encodeUInt8(e["_enterTimes"] as uint );

		return this;
	}

	public function decodedungeonGroupEnter():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_timestamp"] = this.decodeUInt32();
		e["_dungeonGroupID"] = this.decodeUInt8();
		e["_enterTimes"] = this.decodeUInt8();

		return e;
	}

	public function encodedungeonGroupEnterList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_dungeonGroupEnter"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodedungeonGroupEnter(_ar[i]);


		return this;
	}

	public function decodedungeonGroupEnterList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodedungeonGroupEnter());
		e["_dungeonGroupEnter"] = _ar;

		return e;
	}

	public function encodelineNumberUpdate(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt8(e["_lineNumber"] as uint );
		this.encodeUInt8(e["_playerNumber"] as uint );

		return this;
	}

	public function decodelineNumberUpdate():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_lineNumber"] = this.decodeUInt8();
		e["_playerNumber"] = this.decodeUInt8();

		return e;
	}

	public function encodelineNumberList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_lineNumberUpdate"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodelineNumberUpdate(_ar[i]);


		return this;
	}

	public function decodelineNumberList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodelineNumberUpdate());
		e["_lineNumberUpdate"] = _ar;

		return e;
	}

	public function encodedart(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodecurrency(e["_currency"] as Object );
		this.encodeUInt32(e["_dartID"] as uint );
		this.encodeUInt8(e["_flag"] as uint );

		return this;
	}

	public function decodedart():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_currency"] = this.decodecurrency();
		e["_dartID"] = this.decodeUInt32();
		e["_flag"] = this.decodeUInt8();

		return e;
	}

	public function encodedartShopPaidRefreshInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_currentRefreshId"] as uint );
		this.encodeUInt32(e["_currentRefreshCount"] as uint );
		this.encodeUInt32(e["_refreshTime"] as uint );

		return this;
	}

	public function decodedartShopPaidRefreshInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_currentRefreshId"] = this.decodeUInt32();
		e["_currentRefreshCount"] = this.decodeUInt32();
		e["_refreshTime"] = this.decodeUInt32();

		return e;
	}

	public function encodedartShopFreeRefreshInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_refreshTime"] as uint );

		return this;
	}

	public function decodedartShopFreeRefreshInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_refreshTime"] = this.decodeUInt32();

		return e;
	}

	public function encodedartList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_darts"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodedart(_ar[i]);


		return this;
	}

	public function decodedartList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodedart());
		e["_darts"] = _ar;

		return e;
	}

	public function encodedartShopInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodedartList(e["_dartList"] as Object );
		this.encodedartShopPaidRefreshInfo(e["_dartShopPaidRefreshInfo"] as Object );
		this.encodedartShopFreeRefreshInfo(e["_dartShopFreeRefreshInfo"] as Object );
		this.encodeUInt8(e["_shopID"] as uint );

		return this;
	}

	public function decodedartShopInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_dartList"] = this.decodedartList();
		e["_dartShopPaidRefreshInfo"] = this.decodedartShopPaidRefreshInfo();
		e["_dartShopFreeRefreshInfo"] = this.decodedartShopFreeRefreshInfo();
		e["_shopID"] = this.decodeUInt8();

		return e;
	}

	public function encodeexchangeDartInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_exchangeTime"] as uint );
		this.encodeUInt8(e["_exchangeCount"] as uint );

		return this;
	}

	public function decodeexchangeDartInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_exchangeTime"] = this.decodeUInt32();
		e["_exchangeCount"] = this.decodeUInt8();

		return e;
	}

	public function encoderankingDetailInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_str = e["_name"];
		len = _str.length;
		this.encodeUInt32(len);
		if(len != 0)
			this.encodeString(_str);

		this.encodeInt64(e["_playerID"] as Int64 );
		this.encodeUInt32(e["_party"] as uint );
		this.encodeUInt32(e["_fightPower"] as uint );
		this.encodeInt32(e["_number"] as int );
		this.encodeUInt16(e["_ranking"] as uint );
		this.encodeUInt16(e["_level"] as uint );

		return this;
	}

	public function decoderankingDetailInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		len = this.decodeUInt32();
		e["_name"] = this.decodeString(this.position,len);
		e["_playerID"] = this.decodeInt64();
		e["_party"] = this.decodeUInt32();
		e["_fightPower"] = this.decodeUInt32();
		e["_number"] = this.decodeInt32();
		e["_ranking"] = this.decodeUInt16();
		e["_level"] = this.decodeUInt16();

		return e;
	}

	public function encoderankingInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_top10List"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encoderankingDetailInfo(_ar[i]);


		_ar = e["_challengeList"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encoderankingDetailInfo(_ar[i]);

		this.encodeUInt16(e["_challengeTimes"] as uint );
		this.encodeUInt16(e["_yesterdayRank"] as uint );

		return this;
	}

	public function decoderankingInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decoderankingDetailInfo());
		e["_top10List"] = _ar;
		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decoderankingDetailInfo());
		e["_challengeList"] = _ar;
		e["_challengeTimes"] = this.decodeUInt16();
		e["_yesterdayRank"] = this.decodeUInt16();

		return e;
	}

	public function encoderelicEventIdList(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;


		_ar = e["_eventId"]
		this.encodeUInt32(_ar.length);
		for(i = 0 ; i < _ar.length; i++)
			this.encodeUInt8(_ar[i]);


		return this;
	}

	public function decoderelicEventIdList():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		_ar = new Array();
		len = this.decodeUInt32();
		for(i = 0; i < len; i++)
			_ar.push(this.decodeUInt8());
		e["_eventId"] = _ar;

		return e;
	}

	public function encodeplayerLogTime(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_loginTime"] as uint );
		this.encodeUInt32(e["_logoutTime"] as uint );
		this.encodeUInt32(e["_playTime"] as uint );

		return this;
	}

	public function decodeplayerLogTime():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_loginTime"] = this.decodeUInt32();
		e["_logoutTime"] = this.decodeUInt32();
		e["_playTime"] = this.decodeUInt32();

		return e;
	}

	public function encodedailyRewardInfo(e:Object):JoyPortBuffer
	{
		var len:uint  = 0;
		var _ar:Array = null;
		var _str:String = "";
		var _obj:Object = null;
		var i:int = 0;

		this.encodeUInt32(e["_finishScheduleSaveTime"] as uint );
		this.encodeUInt32(e["_rewardScheduleTime"] as uint );
		this.encodeUInt8(e["_finishSchedule"] as uint );
		this.encodeUInt8(e["_rewardSchedule"] as uint );

		return this;
	}

	public function decodedailyRewardInfo():Object
	{
		var e:Object = new Object();
		var len:uint = 0;
		var _ar:Array = null;
		var i:int = 0;

		e["_finishScheduleSaveTime"] = this.decodeUInt32();
		e["_rewardScheduleTime"] = this.decodeUInt32();
		e["_finishSchedule"] = this.decodeUInt8();
		e["_rewardSchedule"] = this.decodeUInt8();

		return e;
	}

}

}



